<?php 
namespace Common\Model;
use Hdphp\Model\Model;

/**
 * 文章管理模型
 * Hd
 */
 class Article extends Model{
// 	指定模型操作的表
	protected $table='article';
//		自动验证参数
//		 protected $validate
		protected $validate=array(           
			array('title','required','分类名不能为空',3,3),

		);
//		自动完成 
		protected $auto=array(
//			字段验证，1，字段名，2作用的方法或函数名，3方法类型，验证条件，验证时机
			array('sendtime','time','function',3,1),
			array('updatetime','time','function',3,2),
			array('user_uid','uid','method',3,1),
			array('thumb','image','method',3,3)
		);	
		
		/**
		 * 用户id
		 */
		public function uid(){
			//var_dump($_SESSION['id']);die;
			return $_SESSION['id'];
		}
		
		 /**
		  * 图片处理方法
		  */
		public function image(){
//			如果没有执行新的上传修改条件
//			判断post传上来的字段是否为真，为真就直接返出
			if(isset($_POST['thumb'])){
				return $_POST['thumb'];
			}
//			拼接新的路径加上上传日期
			$uploadDir='Upload/'.date('ymb');
//			创建文件夹
			is_dir($uploadDir)||mkdir($uploadDir,0777,TRUE);
//			上传
//			调用框架上传的方法
			$file=Upload::type('jpeg,jpg,png,gif')->path($uploadDir)->size(2000000)->make();
//			$file=Upload::type('jpeg,jpg,png,gif')->path($uploadDir)->size(2000000)->make();	
			
//			缩约图		
			if($file){
//				拼接输出的路径
				$dst=$uploadDir.'/thumb_'.$file[0]['basename'];
//				缩约图方法
				$path=Image::thumb($file[0]['path'],$dst,540,350,1);
				return $path;
			}
//			如果没有上传文件，返回一个空字符到字段
				return '';
		}
		
//getAll      获取所有数据
//one         获取一条数据
//store       保存数据
//edit        更新数据
//del         删除数据


		/**
		 * 添加数据
		 */
		public function store(){
//			添加文章需要先验证
//			create会自动调用自动验证和自动完成 
			if(!$this->create()) return FALSE;
//			p($this->data);die;
//			还要验证文章内容表
//			自动验证
			$arcData=new ArcData;
			if(!$arcData->create()){
				$this->error=$arcData->getError();
				return FALSE;
			}
			
//			有可能上传文件为空或者上传文件不存在
			if($_FILES['thumb']['error']!=4){
//				获取上传文件的错误信息，如果为真有错误就返回错误到$this->error
				if($error=Upload::getError()){
					$this->error=$error;
					return FALSE;
				}
			}
			//p($this->data);die;
			
//			添加文章表
//			并且获取文章表填入数据的主键
			
			$aid=$this->add();
			
//			添加文章标签中间表
//			把tid中的所有键值内容写到文章标签中间表中
//			实列化中间表
			$arcTag=new ArcTag;
//			循环post的tid字段，将字段循环重组后添加进中间表
			foreach(Q('post.tid') as $tid){
				$data=array(
					'article_aid'=>$aid,
					'tag_tid'=>$tid
				);
//				添加文章标签中间表
				$arcTag->add($data);

				
			}
//			$arcData->data['article_aid']有三个字段，tag表里$aid的字段压给
			$arcData->data['article_aid']=$aid;
//			添加文章内容表
			$arcData->add();
			return TRUE;
		}		
		
		/**
		 * 编辑方法
		 * 
		 */		
	
		public function edit(){
			
			if(!$this->create()) return FALSE;
//			验证文章内容表
//			自动验证
//			实列化
			$arcData=new ArcData;
			if(!$arcData){
//				将文章内容表的错误信息反给文章表里,
				$this->error=$arcData->getError();
				return FALSE;
			}		
			
//			判断上传文件中是否上传图片
//			如果$_files中的['thumb']存在就是上传动作，才执行里面获取upload中的error信息
			if(isset($_FILES['thumb']) && $_FILES['thumb']['error']!=4){
//				获取上传类中的错误信息，如果为真有错误就返回错误到$this->error
				if($error=Upload::getError()){
					$this->error=$error;
					return FALSE;
				}				
			}
			
//			这里需要有主键 SAVE如果post条件中有主键就会自动修改主键这一条
			$this->save();		
		
//			修改中间表
//			因为修改的时候多对多关系不好处理
//			实列化中间表
			$arcTag=new ArcTag;
//			先把原来的所有数据删除
			$aid=$_POST['aid'];
			$arcTag->where('article_aid',$aid)->delete();
			
//			然后将新提交的tagtid写入数据库
			foreach(Q('post.tid') as $tid){
//				重组数组。
				$data=array(
					'article_aid'=>$aid,
					'tag_tid'=>$tid
				);
//				从新添加
				$arcTag->add($data);
			}
			
//			文章内容表修改。	
//			添加文章内容表
			$arcData->where('artile_aid',$aid)->save();
			return TRUE;
			
		}
	
 }
 
